home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 32 / Amiga Format AFCD32 (Nov 1998, Issue 117).iso / -seriously_amiga- / programming / e / newgui / src / plugins / pl_popup.e < prev    next >
Text File  |  1998-08-10  |  2KB  |  82 lines

  1. OPT     OSVERSION = 37
  2. OPT     MODULE
  3.  
  4. MODULE  'newgui/newgui'
  5. MODULE  'libraries/gadtools'
  6. MODULE  'intuition/gadgetclass'
  7. MODULE  'intuition/intuition'
  8. MODULE  'gadgets/select'
  9. MODULE  'selectgadget'
  10. MODULE  'tools/textlen'
  11.  
  12. EXPORT  CONST   POPUP = PLUGIN
  13.  
  14. EXPORT OBJECT popup OF plugin
  15.   item
  16.  PRIVATE
  17.   gad:PTR TO gadget
  18.   labels
  19. ENDOBJECT
  20.  
  21. DEF     selectgadgetbase
  22.  
  23. PROC popup(labels,item) OF popup
  24.   IF (selectgadgetbase:=OpenLibrary('gadgets/select.gadget',40))=NIL THEN Raise("popg")
  25.  self.labels:=labels
  26.  self.item:=item
  27. ENDPROC
  28.  
  29. PROC will_resize() OF popup IS RESIZEX
  30.  
  31. PROC min_size(ta,fh) OF popup
  32. ENDPROC textlen(self.labels[0],ta),fh+4
  33.  
  34. PROC message_action(class,qual,code,win) OF popup 
  35.  self.item:=code
  36. ENDPROC TRUE
  37.  
  38. PROC render(ta,x,y,xs,ys,w) OF popup
  39.  self.gad:=NewObjectA(NIL,'selectgclass',
  40.        [GA_LEFT,        x,
  41.         GA_TOP,         y,
  42.         GA_RELVERIFY,   TRUE,
  43.         GA_WIDTH,       xs,
  44.         GA_HEIGHT,      ys,
  45.         GA_DISABLED,    self.dis,
  46.         SGA_LABELS,     self.labels,
  47.         SGA_ACTIVE,     self.item,
  48.         SGA_SEPARATOR,  TRUE,
  49.         SGA_ITEMSPACING,2,
  50.         SGA_FOLLOWMODE, SGFM_FULL,
  51.         SGA_DROPSHADOW, TRUE,
  52.         NIL,NIL])
  53.   IF self.gad=NIL THEN Raise("popg")
  54.   AddGList(w,self.gad,-1,1,NIL)
  55.   RefreshGList(self.gad,w,NIL,1)
  56. ENDPROC
  57.  
  58. PROC clear_render(win:PTR TO window) OF popup
  59.  IF self.gad
  60.   RemoveGList(win,self.gad,1)
  61.   DisposeObject(self.gad)
  62.  ENDIF
  63.  IF (selectgadgetbase<>NIL) THEN CloseLibrary(selectgadgetbase)
  64. ENDPROC
  65.  
  66. PROC end()      OF popup
  67.  IF self.gad
  68.   IF (self.gh.wnd<>NIL) THEN RemoveGList(self.gh.wnd,self.gad,1)
  69.   DisposeObject(self.gad)
  70.  ENDIF
  71. ENDPROC
  72.  
  73. PROC message_test(imsg:PTR TO intuimessage,win:PTR TO window) OF popup
  74.   IF imsg.class=IDCMP_GADGETUP THEN RETURN imsg.iaddress=self.gad
  75.   IF imsg.class=IDCMP_GADGETDOWN THEN RETURN imsg.iaddress=self.gad
  76. ENDPROC FALSE
  77.  
  78. PROC disable(disabled=TRUE) OF popup
  79.   SetGadgetAttrsA(self.gad,self.gh.wnd,NIL,[GA_DISABLED,disabled,NIL])
  80.   self.dis:=disabled
  81. ENDPROC
  82.